{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:06.261745Z",
     "start_time": "2025-06-21T09:48:54.220839Z"
    }
   },
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "import pandas as pd\n",
    "import numpy as np"
   ],
   "outputs": [],
   "execution_count": 2
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:06.436110Z",
     "start_time": "2025-06-21T09:49:06.306001Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# data = pd.DataFrame(\n",
    "#     {\n",
    "#         \"Exam1\": [34.62, 30.28, 35.84, 60.18, 79, 45, 61, 75, 76],\n",
    "#         \"Exam2\": [78.02, 43.89, 72.9, 86.30, 75.34, 56.31, 96.51, 46.55, 87.43],\n",
    "#         \"Pass\": [0, 0, 0, 1, 1, 0, 1, 1, 1],\n",
    "#     }\n",
    "# )\n",
    "# data.to_csv(r\"data\\examdata.csv\", index=False)\n",
    "data = pd.read_csv(\"../data/examdata.csv\")\n",
    "data.head()"
   ],
   "id": "fa0dfb3710efb2dc",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "       Exam1      Exam2  Pass\n",
       "0  13.046815  14.741152     0\n",
       "1  13.408520  13.763270     0\n",
       "2  14.195915  15.853181     0\n",
       "3  14.914701  16.174260     0\n",
       "4  13.576700  14.042849     0"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Exam1</th>\n",
       "      <th>Exam2</th>\n",
       "      <th>Pass</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>13.046815</td>\n",
       "      <td>14.741152</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>13.408520</td>\n",
       "      <td>13.763270</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>14.195915</td>\n",
       "      <td>15.853181</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>14.914701</td>\n",
       "      <td>16.174260</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>13.576700</td>\n",
       "      <td>14.042849</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 3
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 任务\n",
    "- 基于examdata.csv数据，建立逻辑回归模型，预测Exam1=75,Exam2=60时该同学在Exam3是Passed or failed;建立二阶边界，提高模型准确率"
   ],
   "id": "24d77c8efa362506"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:10.151849Z",
     "start_time": "2025-06-21T09:49:07.067278Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import matplotlib\n",
    "from matplotlib import pyplot as plt\n",
    "fig1 = plt.figure()\n",
    "plt.scatter(data.loc[:, \"Exam1\"], data.loc[:, \"Exam2\"])\n",
    "plt.title(\"Exam1 vs Exam2\")\n",
    "plt.xlabel(\"Exam1\")\n",
    "plt.ylabel(\"Exam2\")\n",
    "plt.show()"
   ],
   "id": "925ba5dda2678863",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 4
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:10.284188Z",
     "start_time": "2025-06-21T09:49:10.270466Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# add label mask\n",
    "mask = data.loc[:, \"Pass\"] == 1\n",
    "print( ~mask)"
   ],
   "id": "1deabae4e34e8662",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0       True\n",
      "1       True\n",
      "2       True\n",
      "3       True\n",
      "4       True\n",
      "       ...  \n",
      "302    False\n",
      "303    False\n",
      "304    False\n",
      "305    False\n",
      "306    False\n",
      "Name: Pass, Length: 307, dtype: bool\n"
     ]
    }
   ],
   "execution_count": 5
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:11.606727Z",
     "start_time": "2025-06-21T09:49:11.037557Z"
    }
   },
   "cell_type": "code",
   "source": [
    "fig2 = plt.figure()\n",
    "passed = plt.scatter(data.loc[:, \"Exam1\"][mask], data.loc[:, \"Exam2\"][mask])\n",
    "failed = plt.scatter(data.loc[:, \"Exam1\"][~mask], data.loc[:, \"Exam2\"][~mask])\n",
    "plt.title(\"Exam1 vs Exam2\")\n",
    "plt.xlabel(\"Exam1\")\n",
    "plt.ylabel(\"Exam2\")\n",
    "plt.legend((passed, failed), (\"Passed\", \"Failed\"))\n",
    "plt.show()"
   ],
   "id": "1d29a35a1385cd0f",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHHCAYAAABXx+fLAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAATzZJREFUeJzt3QmczfX+x/HPjGXsYzcjO9m3UibiSmSphJS4FYqUCElK/7Kkm6Tc0kK3BSWJFiF3ClmSLVtZImTrGjtjXzLn//h8xzmdM3POzDnjzNl+r+fj8Wvmt53z+53TmfP2XaNsNptNAAAALCQ62BcAAAAQaAQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgIEJNnjxZoqKiPC4rV66UULV69Wp5/PHHpUGDBpIrVy5zvaEko9f1sccek1D1888/S79+/aRWrVqSP39+KVeunHTu3Fl+//33YF8aEHA5A/+UAALpxRdflIoVK6bbXqVKFQlV8+bNkw8++EDq1q0rlSpVCskv6Ntuu026deuWbnvVqlUlVI0ZM0Z++uknuffee81re+DAAXn77bfl+uuvN4G4du3awb5EIGCimAwViNwSoIceesj8q/+GG26QcHLw4EEpVKiQ5M2b15RYvPPOOxJKf6q0pKdv374mPIST5cuXm/8XcufO7di2fft2qVOnjtxzzz0yderUoF4fEEhUgQEWN3z4cImOjpaFCxe6bO/du7f5ovzll1/M+sWLF2XYsGGmWio2NtZUoTRt2lQWLVrkct7u3btNQHjttddMcNESnHz58kmrVq1k3759JsiMGjVKypQpYwJO+/bt5dixYy6PUapUKbMvK7QUo3nz5um2p6SkyDXXXGO+6O2mT59u7qdgwYImcGkQePPNN8UffvvtN3MPaUuJli1bJjly5JBnnnnGse2bb76RO+64Q0qXLi0xMTFSuXJl8xpdvnzZ5dxbbrnF3N+vv/4qzZo1M6+rluR98cUXZv+SJUskISHBPG+1atVkwYIFLuc3btzYJfyoa6+91lSJ6fUClqIlQAAiz6RJk7TIxLZgwQLb4cOHXZYjR444jrt48aLtuuuus5UvX9528uRJsy0xMdGcO2rUKMdxel58fLxt0KBBtgkTJtheffVVW7Vq1Wy5cuWyrV+/3nHcrl27zLn169e31axZ0zZu3Djb888/b8udO7ftpptusj333HO2xo0b28aPH2/r37+/LSoqyvbQQw95vI++ffuax/PWiy++aIuOjrYlJSW5bF+yZIl5nJkzZ5r177//3qy3aNHC9s4775ilX79+tnvvvTfT59Dzevbsme511eXChQuO48aOHWuO/eabb8z66dOnbZUrVzavy/nz5x3HdejQwda5c2dzvL62eg163uDBg12et1mzZrbSpUvbypYta3v66adtb731lnmsHDly2KZPn26Li4uzjRgxwvbGG2/YrrnmGltsbKzjPfUkJSXFHNuqVSsvX2EgMhCAgAgPQO6WmJgYl2M3btxoAkqvXr1sx48fN1+IN9xwg+3SpUuOY/766y+XL3elx5YqVcr28MMPpwtAJUqUsJ04ccKxfejQoWZ7vXr1XB63a9eu5rmdA8HVBKBt27aZ4zUcOHv88cdtBQoUsJ09e9asDxgwwFaoUCFzX77y9Lrq8tlnnzmOu3z5sq1JkybmNdLQqfeSM2dO288//+zyePZrcvboo4/a8uXL5/K6aADS55g2bZpj29atW802DX0rV650bP/uu+/Mdv3/ICOffPKJOe7DDz/0+XUAwhmNoIEIp9VQaRvmahWMM61WGTlypAwdOtRUrxw5ckS+//57yZkzp8s59vO0OunEiRPmp7YpWbduXbrn1Ya2WlVmp1Uz6oEHHnB5XN3+2Wefyf/+9z9TXXa19F7r168vn3/+uWk/pLQqSauJ2rVr56haK1y4sJw5c0bmz58vbdq08fl5tOrO/vjOtBrNTqsWtS1WvXr1pG3btrJmzRp5/vnn07XJcq7uO3XqlFy4cMFUL7733nuydetWc75dgQIFpEuXLo51rerSe9HqPftrrOy///HHHx7vQR9b2zI1atRIunfv7vNrAIQzAhAQ4Ro2bOhVI+inn37atInRLugvv/yy1KxZM90xU6ZMkddff918cV66dMmx3V0vM+1i7cwehsqWLet2+/Hjx8Vf7rvvPnnuuedMqNJgsHjxYjl06JDZbqfd7GfMmGGCiR6jbZS0S7i3YUjbMLVs2TLT47Q9z4gRI8zrq0HzhRdeSHfM5s2bTTD64Ycf5OTJky77kpOT0z1v2mEB9DX09XXVHmDa7kiP03CYNhQDkY5G0AAcJQXaI0ht3Lgx3X7tIdSjRw/zhf7h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uHGjdOvWzfQM03GGAAAAcgbzySdMmGB+3nLLLS7bJ02aJD169DC///vf/5bo6GgzAKL21tLxfN59912X47VUyN6DTA0ZMsSMJdS7d29TfdakSRNJTEyUPHnyBOS+AABAaAupcYBCBeMAAQAQfsJ2HCAAAIBAIAABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLIQABAADLyRnsCwAAWNvlFJus3nVMDp06LyUL5pGGFYtKjuioYF8WIhwBCAAQNImbkmTknC2SlHzesS0+No8Mb1dT2tSOD+q1IbJRBQbAmlIui+z6UWTjF6k/dR0BDz99pq5zCT/qQPJ5s133A9mFEiAA1rNltkjiMyIn9/+9rVBpkTZjRGreFcwrs1S1l5b82Nzs021aAab7b6sZR3UYsgUlQACsF35mdHMNP+pkUup23Y9sp21+0pb8pA1Bul+PA7IDAQiAdWg1l5b8eCx30HqZZ6kOCwBt8OzP4wBfEYAAWMee5elLflzYRE7+L/U4ZCvt7eXP4wBfEYAAWMfpg/49DlmmXd21t5en1j26XffrcUDEBaClS5dKu3btpHTp0hIVFSWzZs1y2a/b3C1jx471+JgjRoxId3z16tUDcDcAQl6BUv49DlmmDZu1q7tKG4Ls67qfBtCIyAB05swZqVevnrzzzjtu9yclJbksH330kQk0nTp1yvBxa9Wq5XLesmXLsukOAISV8o1Te3tlVO5Q6JrU45DtdJyfCQ9cL3GxrtVcuq7bGQcIEdsNvm3btmbxJC4uzmX9m2++kebNm0ulSpUyfNycOXOmOxcAJDpHald37e1lQpBzY+groajNK6nHISA05GhXd0aCRqCFTRuggwcPyrfffis9e/bM9Njt27ebajUNSvfff7/s3bs3INcIIAzoOD+dPxYplKZ0QUuGdDvjAAWchp1GlYtJ+/rXmJ+EHwRC2AyEOGXKFClYsKDcfffdGR6XkJAgkydPlmrVqpnqr5EjR0rTpk1l06ZN5nx3Lly4YBa7kydP+v36AYQI7eKet4hIy5EiZw6L5C8hUjA+tdqLkh/AMsImAGn7Hy3NyZMn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E2XzJiZZTEpKiuzfv18KFiwoUVFRAUutGrj27dsnhQoVkkhntftV3HPk37PV7teK92y1+w23e9ZIo+GndOnSEh2dcSsfSoDc0BetTJkyQXlu/Z8r1P8H8yer3a/iniOf1e7XivdstfsNp3vOrOTHjkbQAADAcghAAADAcghAISImJkaGDx9uflqB1e5Xcc+Rz2r3a8V7ttr9RvI90wgaAABYDiVAAADAcghAAADAcghAAADAcghAAADAcghAATBixAgzorTzUr169QzPmTlzpjkmT548UqdOHZk3b56EiwoVKqS7X1369u3r9vjJkyenO1bvO5QtXbpU2rVrZ0Yb1eudNWuWy37tWzBs2DCJj4+XvHnzSsuWLWX79u2ZPu4777xjXj+9/4SEBFm9erWEwz1funRJnnnmGfP/av78+c0x3bp1MyOq+/uzESrvcY8ePdJde5s2bSL2PVbuPte6jB07Nizf49GjR8uNN95oRv0vWbKkdOjQQbZt2+ZyzPnz583frmLFikmBAgWkU6dOcvDgwQwfN6uf/1C452PHjskTTzwh1apVM9derlw56d+/vyQnJ2f4uFn9PAQTAShAatWqJUlJSY5l2bJlHo9dvny5dO3aVXr27Cnr1683/4PqsmnTJgkHP//8s8u9zp8/32y/9957PZ6jo4s6n7Nnzx4JZWfOnJF69eqZLzN3Xn31VRk/frxMnDhRVq1aZUJB69atzR9TTz7//HMZNGiQ6W66bt068/h6zqFDhyTU7/ns2bPmml944QXz86uvvjJ/VO+66y6/fjZC6T1W+gfe+do/++yzDB8znN9j5Xyvunz00Ufmi05DQTi+x0uWLDHhZuXKlebvlAb5Vq1amdfB7sknn5Q5c+aYf5Tq8Rrq77777gwfNyuf/1C55/3795vltddeM985+g/UxMRE832UGV8/D0Gn3eCRvYYPH26rV6+e18d37tzZdscdd7hsS0hIsD366KO2cDRgwABb5cqVbSkpKW73T5o0yRYbG2sLV/ox+vrrrx3rep9xcXG2sWPHOradOHHCFhMTY/vss888Pk7Dhg1tffv2daxfvnzZVrp0advo0aNtoX7P7qxevdoct2fPHr99NkLpfrt3725r3769T48Tae+x3v+tt96a4THh8h6rQ4cOmftesmSJ43ObK1cu28yZMx3H/Pbbb+aYFStWuH2MrH7+Q+We3ZkxY4Ytd+7ctkuXLtk8ycrnIdgoAQoQLf7UYuVKlSrJ/fffL3v37vV47IoVK0yRqTP914NuDzcXL16UqVOnysMPP5zhxLKnT5+W8uXLmwn32rdvL5s3b5ZwtWvXLjlw4IDLe6hz02h1h6f3UF+ntWvXupyjc9Lpeji+70qLzPU9L1y4sN8+G6Fm8eLFphpBqwv69OkjR48e9XhspL3HWg307bffelUyEC7vsb2ap2jRouanvl9aQuL8nmn1nVYLeXrPsvL5D6V79nSMltLnzJnTb5+HUEAACgD9H99ejDhhwgTzAWnatKmZsdYd/fCUKlXKZZuu6/Zwo20ITpw4YeqHPdEPixalf/PNNyYspaSkSOPGjeXPP/+UcGR/n3x5D48cOSKXL1+OmPddi/q1TZBW5WY0eaKvn41QosX9H3/8sSxcuFDGjBljqhbatm1r3kcrvMdTpkwx7Ugyqw4Kl/dY/+4MHDhQbr75Zqldu7bZpu9L7ty504X4jN6zrHz+Q+me3f1/O2rUKOndu7f48/MQCpgNPgD0fwK7unXrmj8IWtoxY8YMr/71FM4+/PBDc//6rz9PGjVqZBY7DT81atSQ9957z3zwEF70X8ydO3c2DUH1Cy9SPxtdunRx/K6Nv/X6K1eubP4V3KJFC4l0+o8WLc3JrMNCuLzH2i5G27yESvukULjnkydPyh133CE1a9Y0jdkj7fNACVAQ6L8mqlatKjt27HC7Py4uLl0vA13X7eFEGzIvWLBAevXq5dN5uXLlkuuuu87j6xPq7O+TL+9h8eLFJUeOHGH/vtvDj7732sAyo9KfrHw2QplW7+j76OnaI+U9Vj/++KNp5O7rZztU3+N+/frJ3LlzZdGiRVKmTBnHdn1ftOpSS7G9fc+y8vkPpXu20xI6LdXRUr6vv/7a/F325+chFBCAgkDbu+zcudN0kXRHS0O0GNGZfpk4l5KEg0mTJpn6YP0XhC+0yHTjxo0eX59QV7FiRfOHzvk91H9JaW8QT++hFrM3aNDA5Rwtntb1cHnf7eFH23to8NVuw/7+bIQyrbLVNg+erj0S3mPnkl29F+0xFs7vsZZSahDQL/gffvjBfHad6T3qF7/ze6bBT9sweXrPsvL5D6V7tl+v9gzT/2dnz56dpWFJMvs8hIRgt8K2gqeeesq2ePFi265du2w//fSTrWXLlrbixYub1vfqwQcftD377LOO4/WYnDlz2l577TXT40B7UWhPhI0bN9rChfZuKVeunO2ZZ55Jty/t/Y4cOdL23Xff2Xbu3Glbu3atrUuXLrY8efLYNm/ebAtVp06dsq1fv94s+jEaN26c+d3e4+mVV16xFS5c2PbNN9/Yfv31V9M7omLFirZz5845HkN7z7z11luO9enTp5ueIpMnT7Zt2bLF1rt3b/MYBw4csIX6PV+8eNF211132cqUKWPbsGGDLSkpybFcuHDB4z1n9tkI1fvVfYMHDzY9gfTaFyxYYLv++utt1157re38+fMR+R7bJScn2/Lly2ebMGGC28cIp/e4T58+pgeqXp/z/7Nnz551HPPYY4+Zv2U//PCDbc2aNbZGjRqZxVm1atVsX331lWPdm89/qN5zcnKy6XVcp04d244dO1yO+euvv9zes7efh1BDAAqA++67zxYfH2+6EV5zzTVmXf/HsmvWrJnpQpi222HVqlXNObVq1bJ9++23tnCigUb/gG7bti3dvrT3O3DgQPMHRu+1VKlStttvv922bt06WyhbtGiRub+0i/2+tCvsCy+8YO5Hv/BatGiR7rUoX768CbfO9IvD/lpol+mVK1fawuGe9Y+eu3266Hme7jmzz0ao3q9+WbRq1cpWokQJ848Tva9HHnkkXZCJpPfY7r333rPlzZvXdO12J5zeY0//z+rQHHYaWh5//HFbkSJFTPDr2LGjCQNpH8f5HG8+/6F6z4s8/D+gi37OnR/Hfo63n4dQE6X/CXYpFAAAQCDRBggAAFgOAQgAAFgOAQgAAFgOAQgAAFgOAQgAAFgOAQgAAFgOAQgAAFgOAQgAAFgOAQhASOrRo4dERUWlW3SCxmDavHmzdOrUSSpUqGCu54033gjq9QDImpxZPA8Asp2GHZ1U11lMTIwE09mzZ81M1/fee688+eSTQb0WAFlHCRCAkKVhR2fWdl6KFCkiixcvNjNV//jjj45jX331VSlZsqQcPHjQrCcmJkqTJk2kcOHCZmb6O++808xCbrd7925TgjNjxgxp2rSp5M2bV2688Ub5/fff5eeff5YbbrhBChQoIG3btpXDhw87ztNjxo4dK126dAl6GAOQdQQgAGHnlltukYEDB8qDDz4oycnJsn79ennhhRfkgw8+kFKlSpljzpw5I4MGDZI1a9bIwoULJTo6Wjp27CgpKSkujzV8+HB5/vnnZd26dZIzZ0755z//KUOGDJE333zTBKwdO3bIsGHDgnSnALILVWAAQtbcuXNNKYyz5557ziwvvfSSzJ8/X3r37i2bNm2S7t27y1133eU4TtvpOPvoo4+kRIkSsmXLFqldu7Zj++DBg6V169bm9wEDBkjXrl1NYLr55pvNtp49e8rkyZOz+U4BBBoBCEDIat68uUyYMMFlW9GiRc1PrQL79NNPpW7dulK+fHn597//7XLc9u3bTcnNqlWr5MiRI46Sn71797oEID3fzl56VKdOHZdthw4dyqY7BBAsBCAAISt//vxSpUoVj/uXL19ufh47dswserxdu3btTDB6//33pXTp0iYAafC5ePGiy2PkypXL8bu2CXK3LW21GYDwRxsgAGFJGzRrLywNOAkJCaYKzB5Ujh49Ktu2bTNte1q0aCE1atSQ48ePB/uSAYQQSoAAhKwLFy7IgQMHXLZpQ2XtCfbAAw+YtjsPPfSQ6S6v1Vavv/66PP3002a/9vz6z3/+I/Hx8aba69lnn/XLNWkJkrYjsv/+v//9TzZs2GDaKmVUWgUgtBCAAIQs7cquAcZZtWrVTE+tPXv2mEbSSo/RsKMNmFu1aiX16tWT6dOnS//+/U21l54zfvx403vsau3fv1+uu+46x/prr71mlmbNmpnu+QDCQ5TNZrMF+yIAAAACiTZAAADAcghAAADAcghAAADAcghAAADAcghAAADAcghAAADAcghAAADAcghAAADAcghAAADAcghAAADAcghAAADAcghAAADAcv4fw3f9iooy/kYAAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 6
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:12.047356Z",
     "start_time": "2025-06-21T09:49:11.851003Z"
    }
   },
   "cell_type": "code",
   "source": [
    "X = data.drop(columns=[\"Pass\"])\n",
    "y = data.loc[:, \"Pass\"]\n",
    "X1 = data.loc[:, \"Exam1\"]\n",
    "X2 = data.loc[:, \"Exam2\"]\n",
    "y.head()"
   ],
   "id": "581cc5171d999014",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0\n",
       "1    0\n",
       "2    0\n",
       "3    0\n",
       "4    0\n",
       "Name: Pass, dtype: int64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 7
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:12.357754Z",
     "start_time": "2025-06-21T09:49:12.324842Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "LR = LogisticRegression()\n",
    "(X, y)"
   ],
   "id": "3629ad191f6ba9d",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(         Exam1      Exam2\n",
       " 0    13.046815  14.741152\n",
       " 1    13.408520  13.763270\n",
       " 2    14.195915  15.853181\n",
       " 3    14.914701  16.174260\n",
       " 4    13.576700  14.042849\n",
       " ..         ...        ...\n",
       " 302  12.476629  14.459370\n",
       " 303  19.582573  10.411619\n",
       " 304  23.339868  16.298874\n",
       " 305  18.261188  17.978309\n",
       " 306   4.752613  24.350407\n",
       " \n",
       " [307 rows x 2 columns],\n",
       " 0      0\n",
       " 1      0\n",
       " 2      0\n",
       " 3      0\n",
       " 4      0\n",
       "       ..\n",
       " 302    1\n",
       " 303    1\n",
       " 304    1\n",
       " 305    1\n",
       " 306    1\n",
       " Name: Pass, Length: 307, dtype: int64)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 8
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:15.149777Z",
     "start_time": "2025-06-21T09:49:12.909760Z"
    }
   },
   "cell_type": "code",
   "source": [
    "y_predict = LR.predict(X)\n",
    "print(y_predict)"
   ],
   "id": "a48023ffb1ab7cbb",
   "outputs": [
    {
     "ename": "NotFittedError",
     "evalue": "This LogisticRegression instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.",
     "output_type": "error",
     "traceback": [
      "\u001B[31m---------------------------------------------------------------------------\u001B[39m",
      "\u001B[31mNotFittedError\u001B[39m                            Traceback (most recent call last)",
      "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[9]\u001B[39m\u001B[32m, line 1\u001B[39m\n\u001B[32m----> \u001B[39m\u001B[32m1\u001B[39m y_predict = \u001B[43mLR\u001B[49m\u001B[43m.\u001B[49m\u001B[43mpredict\u001B[49m\u001B[43m(\u001B[49m\u001B[43mX\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m      2\u001B[39m \u001B[38;5;28mprint\u001B[39m(y_predict)\n",
      "\u001B[36mFile \u001B[39m\u001B[32mE:\\python\\machine-learn\\.venv\\Lib\\site-packages\\sklearn\\linear_model\\_base.py:375\u001B[39m, in \u001B[36mLinearClassifierMixin.predict\u001B[39m\u001B[34m(self, X)\u001B[39m\n\u001B[32m    361\u001B[39m \u001B[38;5;250m\u001B[39m\u001B[33;03m\"\"\"\u001B[39;00m\n\u001B[32m    362\u001B[39m \u001B[33;03mPredict class labels for samples in X.\u001B[39;00m\n\u001B[32m    363\u001B[39m \n\u001B[32m   (...)\u001B[39m\u001B[32m    372\u001B[39m \u001B[33;03m    Vector containing the class labels for each sample.\u001B[39;00m\n\u001B[32m    373\u001B[39m \u001B[33;03m\"\"\"\u001B[39;00m\n\u001B[32m    374\u001B[39m xp, _ = get_namespace(X)\n\u001B[32m--> \u001B[39m\u001B[32m375\u001B[39m scores = \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mdecision_function\u001B[49m\u001B[43m(\u001B[49m\u001B[43mX\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m    376\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mlen\u001B[39m(scores.shape) == \u001B[32m1\u001B[39m:\n\u001B[32m    377\u001B[39m     indices = xp.astype(scores > \u001B[32m0\u001B[39m, indexing_dtype(xp))\n",
      "\u001B[36mFile \u001B[39m\u001B[32mE:\\python\\machine-learn\\.venv\\Lib\\site-packages\\sklearn\\linear_model\\_base.py:349\u001B[39m, in \u001B[36mLinearClassifierMixin.decision_function\u001B[39m\u001B[34m(self, X)\u001B[39m\n\u001B[32m    330\u001B[39m \u001B[38;5;28;01mdef\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[34mdecision_function\u001B[39m(\u001B[38;5;28mself\u001B[39m, X):\n\u001B[32m    331\u001B[39m \u001B[38;5;250m    \u001B[39m\u001B[33;03m\"\"\"\u001B[39;00m\n\u001B[32m    332\u001B[39m \u001B[33;03m    Predict confidence scores for samples.\u001B[39;00m\n\u001B[32m    333\u001B[39m \n\u001B[32m   (...)\u001B[39m\u001B[32m    347\u001B[39m \u001B[33;03m        this class would be predicted.\u001B[39;00m\n\u001B[32m    348\u001B[39m \u001B[33;03m    \"\"\"\u001B[39;00m\n\u001B[32m--> \u001B[39m\u001B[32m349\u001B[39m     \u001B[43mcheck_is_fitted\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m)\u001B[49m\n\u001B[32m    350\u001B[39m     xp, _ = get_namespace(X)\n\u001B[32m    352\u001B[39m     X = validate_data(\u001B[38;5;28mself\u001B[39m, X, accept_sparse=\u001B[33m\"\u001B[39m\u001B[33mcsr\u001B[39m\u001B[33m\"\u001B[39m, reset=\u001B[38;5;28;01mFalse\u001B[39;00m)\n",
      "\u001B[36mFile \u001B[39m\u001B[32mE:\\python\\machine-learn\\.venv\\Lib\\site-packages\\sklearn\\utils\\validation.py:1754\u001B[39m, in \u001B[36mcheck_is_fitted\u001B[39m\u001B[34m(estimator, attributes, msg, all_or_any)\u001B[39m\n\u001B[32m   1751\u001B[39m     \u001B[38;5;28;01mreturn\u001B[39;00m\n\u001B[32m   1753\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m _is_fitted(estimator, attributes, all_or_any):\n\u001B[32m-> \u001B[39m\u001B[32m1754\u001B[39m     \u001B[38;5;28;01mraise\u001B[39;00m NotFittedError(msg % {\u001B[33m\"\u001B[39m\u001B[33mname\u001B[39m\u001B[33m\"\u001B[39m: \u001B[38;5;28mtype\u001B[39m(estimator).\u001B[34m__name__\u001B[39m})\n",
      "\u001B[31mNotFittedError\u001B[39m: This LogisticRegression instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator."
     ]
    }
   ],
   "execution_count": 9
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:17.736725200Z",
     "start_time": "2025-06-18T12:30:04.093497Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "accuracy = accuracy_score(y, y_predict)\n",
    "print(accuracy)"
   ],
   "id": "63cca95e95e02ddd",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9771986970684039\n"
     ]
    }
   ],
   "execution_count": 9
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:17.941026Z",
     "start_time": "2025-06-18T12:30:04.151529Z"
    }
   },
   "cell_type": "code",
   "source": [
    "data_test = pd.DataFrame({\"Exam1\": [5], \"Exam2\": [22]})\n",
    "y_test = LR.predict(data_test)\n",
    "print(y_test)"
   ],
   "id": "6dd172bdee10c21a",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0]\n"
     ]
    }
   ],
   "execution_count": 10
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:18.124352600Z",
     "start_time": "2025-06-18T12:30:04.212691Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 画出边界\n",
    "LR.coef_"
   ],
   "id": "46d00eadcaf1e541",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.42901414, -0.0945185 ]])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 11
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:18.321123400Z",
     "start_time": "2025-06-18T12:30:04.321562Z"
    }
   },
   "cell_type": "code",
   "source": [
    "theta0 = LR.intercept_\n",
    "theta1, theta2 = LR.coef_[0][0], LR.coef_[0][1]\n",
    "print(theta0, theta1, theta2)"
   ],
   "id": "9ef7a78f1c8e436c",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-8.35966947] 0.4290141408417495 -0.09451850321624872\n"
     ]
    }
   ],
   "execution_count": 12
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:18.364679900Z",
     "start_time": "2025-06-18T12:30:04.461523Z"
    }
   },
   "cell_type": "code",
   "source": [
    "X2_new = -(theta0+theta1*X1)/theta2\n",
    "fig2 = plt.figure()\n",
    "plt.plot(X1, X2_new)\n",
    "plt.show()"
   ],
   "id": "b89e98ca468000fc",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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adzodzepqan6+uuv9cQTT1zxBo/nz59XhQoVzBtfde7cWVu2bJG72rt3r44dO+a0DY17TxiH+bPbhsbPae3atU7fY9xzymi743Y3GIeKjW1etGjRXNs3XM2SJUvMw+fGYfJnn31Wp06dyva5nraNjeGPOXPm5OgvbXfZxpnDG8WLFze/GtvLOOJw6TYzhq2M4ZDsttn17P+utM7ZPcc46u3v759r+4PVCCqXMX5BMw+fffLJJ+YvcsuWLc07PGbF+CUPDw936jPaRr+7Mca4z549a45fZsf4pTYOIc+ePdsMNcbdq5s1a6ZDhw7JHWVup2vZhidPnlRGRobHbHfjELcxZ8UYwrzSTcyudd9wJcZh7v/+979auHCh3n33XfOQ+u23325uR2/Yxl999ZU5z+FqwyDuso2N950XX3xRzZs3V506dcw+Y7sEBgb+I2xfaZtdz/7vSuuc1e/tiBEj1KtXL+Xm/mA1t797cm4zNlamunXrmjuucfTg22+/zdFfI+7s888/N9ff+GsqO02bNjWXTEZIqVmzpj799FNzB4F7Mf4CffDBB80JhcYHk6fuG926dXP825hEbNRfpUoV86/Ktm3bytMZf1wYR0euNvHdXbaxMW/DmJPhKvNnXGGdExMT1alTJ9WqVcucFO1J+wNHVK7CSOfVqlXTrl27snw8IiLiH7PKjbbR706MCbELFizQk08+eU3fFxAQoJiYmGx/Pq4ucztdyzYMCwuTn5+f22/3zJBibHtjot613hL+avuGKzOGNYztmF3tnrKNDb/99ps5Wfpa921X3cZ9+vTRTz/9pMWLF6tcuXKOfmO7GEN2xlHhnG6z69n/XWmdMxlHvIyjJMZRs++//958X87N/cFqBJWrMOZj7N692zx1LSvG0QXj8NmljDf9S486uINJkyaZ45VGIr8WxqHCTZs2ZfvzcXWVKlUy35Au3YbGXybG7P/stqFxeLlBgwZO32McljXa7rLdM0OKMR/BCKjG6Zy5vW+4MmOo0hiTz652T9jGlx4pNdbFOEPInbexcdTP+MA2PogXLVpk7ruXMtbR+IC+dJsZAc2YY5PdNrue/d+V1jmzXuNMION39ocffriuy0VcbX+wnNWzeV1N//797UuWLLHv3bvX/vvvv9vbtWtnDwsLM2dbGx555BH7wIEDHc83nuPv728fO3asOcPcmDVvzDzftGmT3V0YZzOUL1/ePmDAgH88dvn6Dh8+3P7rr7/ad+/ebV+7dq29W7du9uDgYPuWLVvsrurcuXP22NhYczF+5d9//33z35lnuIwaNcpetGhR++zZs+0bN240Z8NXqlTJfvHiRcdrGGdLjB8/3tGeOnWqeWbAl19+ad+6dau9V69e5mscO3bM7urrnJqaar/77rvt5cqVs69fv95+9OhRx5KSkpLtOl9t33DV9TUee/nll80zP4zaFyxYYK9fv779pptusicnJ3vkNs6UkJBgL1iwoP2TTz7J8jXcaRs/++yz5hmHRn2X/s5euHDB8ZxnnnnGfC9btGiR/c8//7Q3bdrUXC5VvXp1+8yZMx3tnOz/rrrOCQkJ5lmmUVFR9l27djk9Jz09Pct1zun+4EoIKpfp2rWrvXTp0ubpXWXLljXbxi9ApltuucU8tevy08GqVatmfk/t2rXtc+bMsbsTI3gYb3Tbt2//x2OXr++LL75ovhEY6xoeHm6/44477OvWrbO7ssWLF5vrd/mSuV7GKYqDBw8218f4YGrbtu0/fhYVKlQwQ+iljDf4zJ+FcSrrqlWr7O6wzsabU1aPGYvxfdmt89X2DVddX+NNvX379vaSJUuaf0QY6/XUU0/9I3B40jbO9Omnn9oLFChgnnKbFXfaxtn9zhqXTMhkhIvnnnvOXqxYMTOg3XvvveaH9uWvc+n35GT/d9V1XpzN74CxGPv5pa+T+T053R9ciY/xH6uP6gAAAGSFOSoAAMBlEVQAAIDLIqgAAACXRVABAAAui6ACAABcFkEFAAC4LIIKAABwWQQVAADgsggqAADAZRFUAACAyyKoAAAAl0VQAQAAclX/D5S7vqOoTbfTAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 13
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:18.389617900Z",
     "start_time": "2025-06-18T12:30:38.805035Z"
    }
   },
   "cell_type": "code",
   "source": [
    "fig3 = plt.figure()\n",
    "passed = plt.scatter(data.loc[:, \"Exam1\"][mask], data.loc[:, \"Exam2\"][mask])\n",
    "failed = plt.scatter(data.loc[:, \"Exam1\"][~mask], data.loc[:, \"Exam2\"][~mask])\n",
    "plt.plot(X1, X2_new)\n",
    "plt.title(\"Exam1 vs Exam2\")\n",
    "plt.xlabel(\"Exam1\")\n",
    "plt.ylabel(\"Exam2\")\n",
    "plt.legend((passed, failed), (\"Passed\", \"Failed\"))\n",
    "plt.show()"
   ],
   "id": "906994a055576fe8",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 14
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:18.450241Z",
     "start_time": "2025-06-18T12:33:59.075819Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# create new data\n",
    "X1_2 = X1 * X1\n",
    "X2_2 = X2 * X2\n",
    "X1_X2 = X1 * X2"
   ],
   "id": "7a7bb7feb21498f3",
   "outputs": [],
   "execution_count": 17
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:18.508459400Z",
     "start_time": "2025-06-18T12:34:01.667329Z"
    }
   },
   "cell_type": "code",
   "source": [
    "X_new ={\"X1\": X1, \"X2\": X2, \"X1_2\": X1_2, \"X2_2\": X2_2, \"X1_X2\": X1_X2}\n",
    "X_new = pd.DataFrame(X_new)\n",
    "print(X_new)"
   ],
   "id": "ecd5a5a65dbbfc48",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            X1         X2        X1_2        X2_2       X1_X2\n",
      "0    13.046815  14.741152  170.219386  217.301574  192.325091\n",
      "1    13.408520  13.763270  179.788414  189.427590  184.545078\n",
      "2    14.195915  15.853181  201.523997  251.323352  225.050409\n",
      "3    14.914701  16.174260  222.448299  261.606682  241.234246\n",
      "4    13.576700  14.042849  184.326772  197.201620  190.655548\n",
      "..         ...        ...         ...         ...         ...\n",
      "302  12.476629  14.459370  155.666267  209.073371  180.404188\n",
      "303  19.582573  10.411619  383.477156  108.401810  203.886287\n",
      "304  23.339868  16.298874  544.749416  265.653279  380.413550\n",
      "305  18.261188  17.978309  333.471003  323.219594  328.305288\n",
      "306   4.752613  24.350407   22.587329  592.942333  115.728058\n",
      "\n",
      "[307 rows x 5 columns]\n"
     ]
    }
   ],
   "execution_count": 18
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:18.536726100Z",
     "start_time": "2025-06-18T12:34:30.518863Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#\n",
    "LR2 = LogisticRegression()\n",
    "LR2.fit(X_new, y)"
   ],
   "id": "fc46f0dfe29136b9",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression()"
      ],
      "text/html": [
       "<style>#sk-container-id-2 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-2 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-2 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content {\n",
       "  display: none;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  overflow: visible;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-2 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-2 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-2 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".estimator-table summary {\n",
       "    padding: .5rem;\n",
       "    font-family: monospace;\n",
       "    cursor: pointer;\n",
       "}\n",
       "\n",
       ".estimator-table details[open] {\n",
       "    padding-left: 0.1rem;\n",
       "    padding-right: 0.1rem;\n",
       "    padding-bottom: 0.3rem;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table {\n",
       "    margin-left: auto !important;\n",
       "    margin-right: auto !important;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:nth-child(odd) {\n",
       "    background-color: #fff;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:nth-child(even) {\n",
       "    background-color: #f6f6f6;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:hover {\n",
       "    background-color: #e0e0e0;\n",
       "}\n",
       "\n",
       ".estimator-table table td {\n",
       "    border: 1px solid rgba(106, 105, 104, 0.232);\n",
       "}\n",
       "\n",
       ".user-set td {\n",
       "    color:rgb(255, 94, 0);\n",
       "    text-align: left;\n",
       "}\n",
       "\n",
       ".user-set td.value pre {\n",
       "    color:rgb(255, 94, 0) !important;\n",
       "    background-color: transparent !important;\n",
       "}\n",
       "\n",
       ".default td {\n",
       "    color: black;\n",
       "    text-align: left;\n",
       "}\n",
       "\n",
       ".user-set td i,\n",
       ".default td i {\n",
       "    color: black;\n",
       "}\n",
       "\n",
       ".copy-paste-icon {\n",
       "    background-image: url();\n",
       "    background-repeat: no-repeat;\n",
       "    background-size: 14px 14px;\n",
       "    background-position: 0;\n",
       "    display: inline-block;\n",
       "    width: 14px;\n",
       "    height: 14px;\n",
       "    cursor: pointer;\n",
       "}\n",
       "</style><body><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LogisticRegression</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"\">\n",
       "        <div class=\"estimator-table\">\n",
       "            <details>\n",
       "                <summary>Parameters</summary>\n",
       "                <table class=\"parameters-table\">\n",
       "                  <tbody>\n",
       "                    \n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('penalty',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">penalty&nbsp;</td>\n",
       "            <td class=\"value\">&#x27;l2&#x27;</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('dual',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">dual&nbsp;</td>\n",
       "            <td class=\"value\">False</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('tol',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">tol&nbsp;</td>\n",
       "            <td class=\"value\">0.0001</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('C',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">C&nbsp;</td>\n",
       "            <td class=\"value\">1.0</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('fit_intercept',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">fit_intercept&nbsp;</td>\n",
       "            <td class=\"value\">True</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('intercept_scaling',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">intercept_scaling&nbsp;</td>\n",
       "            <td class=\"value\">1</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('class_weight',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">class_weight&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('random_state',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">random_state&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('solver',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">solver&nbsp;</td>\n",
       "            <td class=\"value\">&#x27;lbfgs&#x27;</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('max_iter',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">max_iter&nbsp;</td>\n",
       "            <td class=\"value\">100</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('multi_class',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">multi_class&nbsp;</td>\n",
       "            <td class=\"value\">&#x27;deprecated&#x27;</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('verbose',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">verbose&nbsp;</td>\n",
       "            <td class=\"value\">0</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('warm_start',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">warm_start&nbsp;</td>\n",
       "            <td class=\"value\">False</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('n_jobs',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">n_jobs&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('l1_ratio',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">l1_ratio&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "                  </tbody>\n",
       "                </table>\n",
       "            </details>\n",
       "        </div>\n",
       "    </div></div></div></div></div><script>function copyToClipboard(text, element) {\n",
       "    // Get the parameter prefix from the closest toggleable content\n",
       "    const toggleableContent = element.closest('.sk-toggleable__content');\n",
       "    const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
       "    const fullParamName = paramPrefix ? `${paramPrefix}${text}` : text;\n",
       "\n",
       "    const originalStyle = element.style;\n",
       "    const computedStyle = window.getComputedStyle(element);\n",
       "    const originalWidth = computedStyle.width;\n",
       "    const originalHTML = element.innerHTML.replace('Copied!', '');\n",
       "\n",
       "    navigator.clipboard.writeText(fullParamName)\n",
       "        .then(() => {\n",
       "            element.style.width = originalWidth;\n",
       "            element.style.color = 'green';\n",
       "            element.innerHTML = \"Copied!\";\n",
       "\n",
       "            setTimeout(() => {\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 2000);\n",
       "        })\n",
       "        .catch(err => {\n",
       "            console.error('Failed to copy:', err);\n",
       "            element.style.color = 'red';\n",
       "            element.innerHTML = \"Failed!\";\n",
       "            setTimeout(() => {\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 2000);\n",
       "        });\n",
       "    return false;\n",
       "}\n",
       "\n",
       "document.querySelectorAll('.fa-regular.fa-copy').forEach(function(element) {\n",
       "    const toggleableContent = element.closest('.sk-toggleable__content');\n",
       "    const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
       "    const paramName = element.parentElement.nextElementSibling.textContent.trim();\n",
       "    const fullParamName = paramPrefix ? `${paramPrefix}${paramName}` : paramName;\n",
       "\n",
       "    element.setAttribute('title', fullParamName);\n",
       "});\n",
       "</script></body>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 19
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:18.583175600Z",
     "start_time": "2025-06-18T12:35:21.780014Z"
    }
   },
   "cell_type": "code",
   "source": [
    "y2_predict = LR2.predict(X_new)\n",
    "accuracy2 = accuracy_score(y, y2_predict)\n",
    "print(accuracy2)"
   ],
   "id": "c53a17fa3679bd7b",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9869706840390879\n"
     ]
    }
   ],
   "execution_count": 20
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:18.605292500Z",
     "start_time": "2025-06-18T12:36:50.359208Z"
    }
   },
   "cell_type": "code",
   "source": "LR2.coef_",
   "id": "aedadbbdfd98f1a6",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.62245012, -0.61807258,  0.36067961,  0.30810622, -0.60440543]])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 21
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-21T09:49:18.613134700Z",
     "start_time": "2025-06-18T12:40:10.319214Z"
    }
   },
   "cell_type": "code",
   "source": [
    "theta0 = LR2.intercept_\n",
    "theta1, theta2, theta3, theta4, theta5 = LR2.coef_[0][0], LR2.coef_[0][1], LR2.coef_[0][2], LR2.coef_[0][3], LR2.coef_[0][4]\n",
    "a = theta4\n",
    "b = theta5*X1 + theta2\n",
    "c = theta0 + theta1*X1 + theta3*X1*X1\n",
    "X2_new_boundary = (-b + np.sqrt(b*b - 4*a*c))/(2*a)\n",
    "print(X2_new_boundary)"
   ],
   "id": "589cc420d0f44b2c",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0      18.016334\n",
      "1      18.304946\n",
      "2      18.905801\n",
      "3      19.417873\n",
      "4      18.436522\n",
      "         ...    \n",
      "302    17.546460\n",
      "303          NaN\n",
      "304          NaN\n",
      "305    21.040463\n",
      "306     9.601195\n",
      "Name: Exam1, Length: 307, dtype: float64\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\python\\machine-learn\\.venv\\Lib\\site-packages\\pandas\\core\\arraylike.py:399: RuntimeWarning: invalid value encountered in sqrt\n",
      "  result = getattr(ufunc, method)(*inputs, **kwargs)\n"
     ]
    }
   ],
   "execution_count": 24
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": "",
   "id": "f85f2f14c7a1512"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "language": "python",
   "name": ".venv"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
